import axios from 'axios'
import store from '../store'
import router from '@/router'
import { Message } from 'element-ui'
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API || 'http://localhost:8080',
  timeout: 5000
})

service.interceptors.request.use(
  config => {
    if (store.getters['user/getToken']) {
      config.headers['token'] = `${store.getters['user/getToken']}`
    }
    return config
  },
  error => {
    return Promise.reject(error)
  }
)


service.interceptors.response.use(
  response => {
    const res = response.data
    
    // 成功状态码判断
    if (res.code === 1) {
      // 返回核心数据（根据接口结构可能返回res.data或res本身）
      return res.data || res 
    }

    // 登录过期处理
    if (res.code === 0 && res.msg === 'NOT_LOGIN') {
      Message.error('请登录')
      store.dispatch('user/logout')
      router.replace(`/login?redirect=${encodeURIComponent(router.currentRoute.fullPath)}`)
      return Promise.reject(new Error('登录状态过期'))
    }

    // 其他业务错误
    Message.error(res.msg || '请求失败')
    return Promise.reject(new Error(res.msg || 'Error'))
  },
  error => {
    // HTTP状态码错误处理
    if (error.response) {
      switch (error.response.status) {
        case 401:
          Message.error('未授权访问')
          break
        case 403:
          Message.error('禁止访问')
          break
        case 500:
          Message.error('服务器内部错误')
          break
      }
    } else if (error.message.includes('timeout')) {
      Message.error('请求超时')
    } else {
      Message.error('网络连接异常')
    }
    
    return Promise.reject(error)
  }
)
export default service